Ordinary
About

Java 버전은 뭘 써야할까?

profileordilov / 2022. 2. 14

2021년 기준 Java 17까지 나왔습니다.

이 중에서 어떤 버전을 써야할까요?

LTS 버전일까?

현재 Java 에서 지원하는 LTS 버전은 8, 11, 17입니다.

LTS 버전은 A/S 보증 기간과 비슷합니다. 평소에는 상관없지만 문제가 생겼을 때 LTS는 개발사에서 직접 해결해줄 수 있습니다. 취약점이나 버그, 연동되는 툴들에서 사용자가 신경써야하는 부분이 줄어듭니다. 예를 들면 예전 Docker와의 호환성이 안좋았더라도 LTS 버전은 이를 해결한 업데이트를 제공합니다. 따라서 8보다 9, 10이 높더라도 LTS인 8을 주로 선택하는 이유입니다.

당연히 최신 것 써야하는 거 아냐?

LTS 버전끼리 서로 지원되는 기간이 비슷하다고 하면 더 높은 버전을 쓰는게 좋을까요? 다른 문법적인 변화는 제쳐두고 성능으로만 비교하면 맞습니다. 자바에서 "성능"이라고 하면 제일 먼저 비교의 대상으로 GC를 생각할 수 있습니다. GC 기준으로 8 보다는 11이, 11보다는 17이 성능면에서 향상된 것을 확인할 수 있습니다. 따라서 새로 시작하는 프로젝트라면 새로운 버전을 사용하는것이 합리적입니다. 다만 이전의 프로젝트에서 버전을 높이려고 하는 경우라면 생각해야할 점이 많습니다.

  1. 호환성
  2. 정책
  3. 빌드 툴 지원

다른 연결되는 소프트웨어와 호환이 잘되는지 확인하는데 시간이 걸릴 수 있습니다. 그리고 다른 팀 혹은 다른 회사와 업데이트에 관한 논의와 규칙이 정해졌는지 생각해야 합니다. 또 IDE나 빌드 도구들에서 간혹 업데이트가 늦어 새로운 버전에 지원이 미흡한 경우가 있습니다. 이런 모든 과정을 생각했을 때의 비용보다 성능으로 얻는 이점이 클 때 이전하는 작업을 할 겁니다. 당연히 기존에 잘 작동했으므로 이런 작업들은 우선순위가 낮을 수 밖에 없습니다. 하지만 보증 기간이 얼마 남지 않았거나, 새로운 버전의 검증이 충분히 된 경우 시간을 들일 필요가 있습니다.

OpenJDK? OracleJDK?

Java 설치에 있어서 보통 OpenJDK와 OracleJDK 중에 선택할 겁니다. 이름을 봤을 때는 둘이 다른 것 같지만 OpenJDK와 OracleJDK 모두 오라클 사에서 만듭니다. 차이점은 OpenJDK는 무료이지만 오라클에서 추가 업데이트나 지원을 받기 어렵습니다. OracleJDK는 개발시에는 무료이지만 상용인 경우 요금을 내야하며, 오라클에서 지원을 받을 수 있습니다. 따라서 OpenJDK를 써도 무방하지만 추후에 안전성이 더 필요한 경우 OracleJDK를 선택하면 됩니다.